package com.example.clipsync;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 主界面Activity
 * 用于配置WebSocket服务器地址和控制连接状态
 */
public class MainActivity extends Activity {

    // SharedPreferences存储文件名
    public static final String PREFS_NAME = "ClipSync_prefs";
    // WebSocket服务器地址的键名
    public static final String KEY_URL = "ws_url";
    // 是否启用WebSocket连接的键名
    public static final String KEY_ENABLED = "ws_enabled";
    // 用于更新Xposed模块状态的广播Action
    public static final String ACTION_UPDATE_STATE = "com.example.clipsync.ACTION_UPDATE_STATE";

    // SharedPreferences实例
    private SharedPreferences prefs;
    // WebSocket地址输入框
    private EditText etUrl;
    // 状态显示文本
    private TextView tvStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取SharedPreferences实例
        // 在旧版本Android中，MODE_PRIVATE可能导致其他进程无法访问
        // 但Xposed框架可以确保模块能访问这个文件
        prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

        // 获取界面控件
        etUrl = findViewById(R.id.et_url);
        Button btnConnect = findViewById(R.id.btn_connect);
        Button btnDisconnect = findViewById(R.id.btn_disconnect);
        tvStatus = findViewById(R.id.tv_status);

        // 加载保存的配置
        loadPreferences();

        // 连接按钮点击事件
        btnConnect.setOnClickListener(v -> {
            String url = etUrl.getText().toString().trim();
            // 验证URL格式
            if (url.isEmpty() || !(url.startsWith("ws://") || url.startsWith("wss://"))) {
                Toast.makeText(this, "请输入有效的 ws:// 或 wss:// 地址", Toast.LENGTH_SHORT).show();
                return;
            }

            // 保存配置
            prefs.edit().putString(KEY_URL, url).putBoolean(KEY_ENABLED, true).apply();

            // 发送广播通知Xposed模块连接WebSocket
            Intent intent = new Intent(ACTION_UPDATE_STATE);
            intent.putExtra("connect", true);
            intent.putExtra(KEY_URL, url);
            sendBroadcast(intent);

            // 更新状态显示
            updateStatus();
            Toast.makeText(this, "连接信号已发送", Toast.LENGTH_SHORT).show();
        });

        // 断开连接按钮点击事件
        btnDisconnect.setOnClickListener(v -> {
            // 保存配置
            prefs.edit().putBoolean(KEY_ENABLED, false).apply();

            // 发送广播通知Xposed模块断开WebSocket连接
            Intent intent = new Intent(ACTION_UPDATE_STATE);
            intent.putExtra("connect", false);
            sendBroadcast(intent);

            // 更新状态显示
            updateStatus();
            Toast.makeText(this, "断开信号已发送", Toast.LENGTH_SHORT).show();
        });
    }

    /**
     * 加载保存的配置信息
     */
    private void loadPreferences() {
        String url = prefs.getString(KEY_URL, "ws://192.168.1.110:7096");
        etUrl.setText(url);
        updateStatus();
    }

    /**
     * 更新连接状态显示
     */
    private void updateStatus() {
        boolean isEnabled = prefs.getBoolean(KEY_ENABLED, false);
        if (isEnabled) {
            tvStatus.setText("当前状态：已启用");
            tvStatus.setTextColor(Color.parseColor("#FF4CAF50")); // 绿色
        } else {
            tvStatus.setText("当前状态：已禁用");
            tvStatus.setTextColor(Color.parseColor("#FFF44336")); // 红色
        }
    }
}